package src

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"

	"gopkg.in/ini.v1"
)

type todo struct {
	DoWhat    string `json:"do_what"`		//要做什么
	DoWhem    string `json:"do_whem"`		//什么时候写入
	StartTime string `json:"start_time"`	//什么时候开始
	EndTime   string `json:"end_time"`		//什么时候结束
}

type Todolist struct {
	toDoList  []todo
	hadDoList []todo
}

var Todo Todolist

func init() {
	Todo.funcReadListFromJsonFile()
}

//funcSaveListtoJsonFile 保存list到文件
func (p Todolist) funcSaveListtoJsonFile() {

	//读取配置文件
	config, err := ini.Load("./src/settings.ini")
	if err != nil {
		fmt.Println("配置文件读取错误", err)
		os.Exit(1)
	}

	writePath := config.Section("filesetting").Key("needDo").String()

	writhFileP, err := os.OpenFile(writePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
	if err != nil {
		fmt.Println("无法打开json文件")
		os.Exit(1)
	}

	//完成后关闭文件
	defer writhFileP.Close()

	//保存为json文件
	jsonList, err := json.Marshal(p.toDoList)
	_, err = writhFileP.Write(jsonList)
	if err != nil {
		fmt.Println("无法写入json文件")
		os.Exit(1)
	}

	writePath = config.Section("filesetting").Key("hadDo").String()

	writhFileP, err = os.OpenFile(writePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
	if err != nil {
		fmt.Println("无法打开json文件")
		os.Exit(1)
	}

	//完成后关闭文件
	defer writhFileP.Close()

	//保存为json文件
	jsonList, err = json.Marshal(p.hadDoList)
	_, err = writhFileP.Write(jsonList)
	if err != nil {
		fmt.Println("无法写入json文件")
		os.Exit(1)
	}
}

func (p *Todolist) funcReadListFromJsonFile() {

	//读取配置文件
	config, err := ini.Load("./src/settings.ini")
	if err != nil {
		fmt.Println("配置文件读取错误")
		os.Exit(1)
	}

	writePath := config.Section("filesetting").Key("needDo").String()
	var jsonData []byte
	jsonData, err = ioutil.ReadFile(writePath)
	if err != nil {
		fmt.Println("无法读取json文件")
		os.Exit(1)
	}
	json.Unmarshal(jsonData, &p.toDoList)

	writePath = config.Section("filesetting").Key("hadDo").String()

	//读取为byte文件
	var jsonData2 []byte
	jsonData2, err = ioutil.ReadFile(writePath)
	if err != nil {
		fmt.Println("无法读取json文件")
		os.Exit(1)
	}
	json.Unmarshal(jsonData2, &p.hadDoList)

}
